﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Player : TankBase
{
    public Weapon weapon;
    public Transform weaponPos;

    // Update is called once per frame
    void Update()
    {
        //公式：前进方向 * 速度 * 时间 * 当前是否移动(-1~1相当于 正方向还是反方向的感觉 不按就是0)
        this.transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime * Input.GetAxis("Vertical"));
        //ad键盘 控制左右转向
        //公式：转动的轴 * 速度 * 时间 * 当前是否移动(-1~1相当于 正方向还是反方向的感觉 不按就是0)
        this.transform.Rotate(Vector3.up * roundSpeed * Time.deltaTime * Input.GetAxis("Horizontal"));
        //3.鼠标左右移动 控制炮台旋转
        //鼠标左右移动炮台转动 
        Head.Rotate(Vector3.up * headRoundSpeed * Time.deltaTime * (Input.GetAxisRaw("Mouse X") * 10));

        //开火
        if (Input.GetMouseButtonDown(0))
        {
            Fire();
        }
    }
    public override void Fire()
    {
        if (weapon)
        {
            weapon.Fire();
        }
    }

    public override void Dead()
    {
        //这里不执行父类的死亡，因为玩家坦克 摄像机是它的对象，如果执行父类死亡，摄像机也会被删除
        //base.Dead();
        Time.timeScale = 0;
        BackMusic.instance.Stop();
        ConfirmPanel.Instance.InitConfirmPanel("游戏失败", "很遗憾，您的坦克已被摧毁", "返回上一级", "再次挑战",
         delegate ()
         {
             Time.timeScale = 1;
             SceneManager.LoadScene("Start");
         },
         delegate ()
         {
             Time.timeScale = 1;
             SceneManager.LoadScene("Game");
         });
        ConfirmPanel.Instance.Show();
    }

    public override void Wound(TankBase other)
    {
        base.Wound(other);
        //更新主面板 血条
        GamePanel.Instance.UpdataHP(maxHp, hp);
    }

    public void ChangeWeapon(GameObject weapon)
    {
        //删除当前拥有的武器
        if (this.weapon != null)
        {
            Destroy(this.weapon.gameObject);
            this.weapon = null;
        }
        //创建出武器 设置它的父对象 并且保证缩放没什么问题
        GameObject weaponObj = Instantiate(weapon, weaponPos, false);
        this.weapon = weaponObj.GetComponent<Weapon>();
        this.weapon.SetFather(this);
    }
}
